#include <bits/stdc++.h>
using namespace std;

int a, b, c, d;



int main(int argc, char const *argv[])
{
	scanf("%d%d%d%d", &a, &b, &c, &d);
	int r1 = b-a, r2 = c-d;
	vector<int> ans;
	if ((a == 0 && b == 0) || (c == 0 && d == 0)) {
		int n1 = -1, n2 = -1;
		if ((c > 0 || d > 0) && (abs(c-d) <= 1)) {
			n1 = 2; n2 = 3;
			a = c; b = d;
		} else if ((a > 0 || b > 0) && (abs(a-b) <= 1)) {
			n1 = 0; n2 = 1;
		} else {
			puts("NO");
			return 0;
		}
		puts("YES");
		if (a > b) ans.push_back(n1);
		for (int i=1; i<=min(a, b); ++i) {
			ans.push_back(n2);
			ans.push_back(n1);
		}
		if (a < b) ans.push_back(n2);
	} else if (r1<0 || r2<0 || (abs(r2-r1) > 1)) {
		puts("NO"); return 0;
	} else {
		puts("YES");
		
		if (r1 > r2) ans.push_back(1);
		for (int i=1; i<=a; ++i) {
			ans.push_back(0);
			ans.push_back(1);
		}
		for (int i=1; i<=min(r1, r2); ++i) {
			ans.push_back(2);
			ans.push_back(1);
		}
		// ans.push_back(2);
		for (int i=1; i<=d; ++i) {
			ans.push_back(2);
			ans.push_back(3);
		}
		if (r2 > r1) ans.push_back(2);
		
	}

	for (int i=0; i<ans.size()-1; ++i) {
		assert(abs(ans[i+1] - ans[i]) == 1);
		printf("%d ", ans[i]);
	}
	printf("%d\n", ans[ans.size() - 1]);
    return 0;
}
 